const JWT = require("jsonwebtoken");
const User = require("../model/user");
const MD5 = require("md5");



const config = 'QW';

// 登录
exports.login = async (req, res) => {
  //获取参数
  const { username, password } = req.body;
  //查询是否存在这个用户
  const user = await User.findOne({ username, password: MD5(password) }, { password: 0 })

  if (user != null) {

    //存在，可以登录，加密生成token
    const jsonuser = JSON.parse(JSON.stringify(user))
    const token = JWT.sign(jsonuser, config, { expiresIn: "7d", });

    res.json({
      code: 0,
      data: {
        userInfo: user,
        token
      },
      message: "登录成功",
    });

  } else {
    res.json({ message: "用户名或密码不正确" });
  }
};


// 验证登录
exports.checkLogin = async (req, res) => {
  res.json({
    code: 0,
    message: '验证成功',
    data: req.userInfo
  });
};








// 修改个人信息
exports.changedata = async (req, res) => {

  // console.log('req.body', req.body);

  // ?timestamp=${Date.now()}拼接时间戳解决因为文件名一样每次请求浏览器缓存问题
  let avatarurl = req.file?.filename ? 'http://localhost:8088/' + req.file.filename + `?timestamp=${Date.now()}` : req.userInfo.avatar


  let id = req.userInfo._id

  // 第一个参数表示根据id修改内容，第二个参数表示修改的内容，第三个参数表示修改查询后不需要的属性
  await User.findByIdAndUpdate({ _id: id }, { avatar: avatarurl })
  const changedata = await User.findByIdAndUpdate({ _id: id }, { password: 0 })

  console.log('changedata', changedata);




  res.json({
    code: 0,
    message: "上传成功",
    changedata
  })

}